SlideShare a Scribd company logo
1 of 19
王
智
祥
著
1-1 C的發展史
1-2 C程式初體驗
1-1-1 C的起源
1-2-1 程式碼的編寫與儲存
1-2-2 程式碼的編譯與執行
1-2-3 程式碼快速解析
1-3-1 妥善利用函數
1-3-2 適當加以縮排
1-3-3 盡量加上註解
1-4 上機實習課程
1-3 C程式設計基本
注意事項
1-1-2 C的特色與優點
1-1-3 C的程式執行過程簡介
第一章 C語言簡介
1-1-1 C的起源 1-1 C的發展史
P 1-2
1972年貝爾實驗室的 Dennis Ritchie 以 B 語言為基礎,
並持續改善它。
除了保留 BCLP 及 B 語言中的許多觀念外,更加入了資
料型態的觀念及其它功能,並且將它發表為「C語言」。
Dennis Ritchie 發展出來的 C 語言乃是架構在 DEC
PDP-11 電腦上,最初的目的主要是做為開發 Unix 作業
系統的工具。
由於 C 語言這樣實用的工具使得 Unix 作業系統開發難
度降低且進行順利,所以也開始應用在其它的程式設計
領域,因此也使得 C 語言迅速受到眾人的矚目。
1-1-2 C的特色與優點(1) 1-1 C的發展史
P 1-4
程式可攜性高,具有跨平台能力
只要是使用 ANSI C 定義的標準函數庫來開發,而其中不包含一些中斷
處理或廠商單獨提供的函數庫,那麼所開發出來的程式將具有相當高的
可攜性(Portable)。
只要如果將開發出來的 C 語言程式碼拿到不同的作業平台上重新編譯,
隨即能夠產生一個功能相同的可執行程式,而程式開發者不再需要重新
編撰程式碼內容。
體積小,執行效率高
只要相較於 Java、Visual Basic、Pascal 等程式語言來說,C 語言的執
行效率相當高,執行時也相當穩定。
1-1-2 C的特色與優點(2) 1-1 C的發展史
P 1-4
具低階處理能力
雖然這些較低階的操作技巧在學習上並不容易,不過卻是其它高階程式
語言難以達成的工作項目。這也是C功能較其它語言強大的地方。
作為學習其它語言的基礎
C 語言堪稱是「程式語言之父」,例如 C++、Java、PHP 與 C# 等
程式語言,它們的基本語法及某些程式觀念都與 C 十分類似。
1-1-3 C程式執行過程簡介 1-1 C的發展史
P 1-5
過程通常可區分為「編輯」、「編譯」、「連結」、「載入」與
「執行」五個階段。
目前多半是使用所謂的整合開發環境(IDE,Integrated
Development Environment)來作為 C 的開發環境。
編寫完的程式碼,電腦是看不懂的,必需翻譯成電腦能懂的機器
語言模式。
由於 C 是一種編譯式語言,也就是必須使用編譯器將原始程式
翻譯成「目的碼」,副檔名為「*.obj」。
由於使用者編譯的C程式中可能會使用到函數庫(副檔名為*.lib)
中的函數,或者一個程式可能分為數個檔案來開發,這些檔案在
編輯為目的檔後,必須透過連結器(linker),最後才會產生可執
行檔(副檔名為*.exe) 。
最後載入過程將可執行檔與相關的函數庫元件,從磁碟中載入到記
憶體中,就可準備執行了。
1-2 C程式初體驗
功能表
程式輸入
游標
編寫
程式區
專案瀏
覽區
1-2 C程式初體驗
P 1-6
工具列
狀態列
編譯器
輸出
紀錄區
1-2-1 程式碼的編寫與儲存
01 #include <stdio.h>
02 #include <stdlib.h>
03
04 int main(void)
05 {
06 printf("C程式初體驗n");/* 呼叫printf()函數 */
07
08 system("pause");
09 return 0;
10 }
1-2 C程式初體驗
P 1-7
輸入完以上程式碼後,請執行「檔案/儲存」指令或是按工具列上
的「儲存」 鈕,並以「Ch01_01」為檔名,「.c」為副檔名進
行檔案儲存。
1-2-2 程式碼的編譯與執行
編譯進行中,這還包括
連結與載入過程
1-2 C程式初體驗
P 1-7
過程按下工具列中的編譯按鈕 或執行「執行/編譯」
指令,然後會出現以下視窗,代表檔案正在編譯中,如
果編譯成功,原本的 Compiling 會出現 Done 字樣:
1-2-2 程式碼的編譯與執行 1-2 C程式初體驗
P 1-7
請執行「執行/執行」指令或按下執行鈕 。
將會看到本程式的執行結果:
1-2-3 程式碼快速解析 1-2 C程式初體驗
P 1-8
程式範例:第一個程式碼範例:CH01_01.c
1-2-3 程式碼快速解析 1-2 C程式初體驗
P 1-8
第 1~2 行: 利用 #include 指令是前置處理指令的一種,在編譯時可將
<stdio.h> 標頭檔與 <stdlib.h> 標頭檔含括進來。
第 4 行: C 中的 main() 函數是程式的進入點,而程式的內容則包含
在 main() 下的大括弧 {} 內,而「void」表示此函數不需要
任何的引數,int 是宣告函數回傳值是整數資料型態。
第5~10行: 表示此函數的所有指令內容。
當然在這兩個大括弧間也可以完全沒有任何指令。
1-2-3 程式碼快速解析 1-2 C程式初體驗
P 1-9
第 6 行: printf() 是 C 語言的輸出函數指令,會將括號中引號「“」
內的字串輸出到螢幕上,而「/n」則是跳脫字元的一種,有
換行的功用,這些輸出功能會在第三章中為您深入說明。
至於「/*」與「*/」符號所包括的部份稱為「註解」。
第 8 行: 由於 Windows 系統正常結束後,都會直接關掉執行視窗,
執行畫面會一閃即逝,根本看不出執行結果。這時可利用
system() 函數呼叫系統參數 pause 會讓程式執行到此先暫停,
並且在執行視窗中會印出 "請按任意鍵繼續… " 等字,當您
敲下任意鍵後,程式便會往下執行。
第 9 行: 因為主程式被宣告為 int 資料型態,必須回傳(return)一
個值,在習慣上是傳回 0 作為程式執行完畢,在 ANSI C
語法中,如果這行指令省略,也會自動視為是「return 0;」
指令。
1-3-1 妥善利用函數
01 int main( )
02 {
03 指令 1;
04 指令 2;
05 .
06 .
07 }
C語言程式的開頭
C語言程式的內容
1-3 C程式設計基本注意事項
P 1-10
當程式開始執行時,一定會先執行 main() 這個函數,
而不管它在程式中的任何位置,編譯器都會找到它才
開始編譯程式內,因此 main() 又稱為「主函數」,架
構如下所示:
1-3-1 妥善利用函數
01 int main( )
02 {
03 }
完全無任何的陳述
P 1-10
1-3 C程式設計基本注意事項
其中第02行的左大括弧 { 表示 main() 函式開始,
第07行的右大括弧 } 則表示 main() 函式的結束。
另外在這兩個大括弧間也可以完全沒有任何內容,
因此一個最簡單的 C 程式可以如下:
1-3-1 妥善利用函數
標 頭 檔 說 明
<math.h> 包含數學運算函數
<stdio.h> 包含標準輸出入函數
<stdlib.h> 標準函數庫,包含各類基本函數。
<string.h> 包含字串處理函數
<time.h> 包含時間、日期的處理函數
P 1-11
1-3 C程式設計基本注意事項
底下列出常見的C內建標頭檔供做參考:
1-3-2 適當加以縮排
Return0; /*不合法的指令*/
printf
( "C程式初體驗n")
; /*合法的指令*/
printf("C程式初體驗!!n"); system("pause"); return 0; /*合法的指令*/
print f("C程式初體驗!!n"); /*不合法的指令*/
P 1-12
1-3 C程式設計基本注意事項
在同一行指令中,對於完整不可分割的單元稱為字符
(token),兩個字符間必須以空白鍵、tab鍵或輸入鍵
區隔。
請看以下指令範例:
1-3-2 適當加以縮排
P 1-13
1-3 C程式設計基本注意事項
像是在主程式中包含子區段,
或者子區段中又包含其它子區
段時,這時就可以透過縮排來
區分程式碼的層級。
簡單來說,遇到大括號時就要
考慮縮排。
如以下巢狀if else指令,透過
縮排的效果讓,讓區塊層次
更分明:
1-3-3 盡量加上註解
/*
這是我的第一個C程式
它會顯示一小段簡單的文字
*/
中間的內容編譯器
全部不予理會
P 1-13
1-3 C程式設計基本注意事項
註解不僅可以幫助其他的程式設計師了解程式內容,
在日後進行程式維護時,詳盡的註解也能夠省下不少
維護時間與成本。
在 C 中「/*」與「*/」間的文字都屬於註解內容。
另外註解也能夠跨行使用。
如下所示:
1-4 上機實習課程
P 1-8
1-4 上機實習課程
上機實習範例: CH01_02.c
執行結果

More Related Content

Similar to 第六章 函數與巨集 (11)

第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
06 函數與巨集
06 函數與巨集06 函數與巨集
06 函數與巨集
 
C 1 c
C 1 cC 1 c
C 1 c
 
C 1 c
C 1 cC 1 c
C 1 c
 
C 1 c
C 1 cC 1 c
C 1 c
 
C 1 c
C 1 cC 1 c
C 1 c
 
C++
C++C++
C++
 
Test
TestTest
Test
 
Ch01
Ch01Ch01
Ch01
 
Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
 

More from shademoon

第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
shademoon
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
shademoon
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
shademoon
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制
shademoon
 
C語言 第五章 Ch05 05
C語言 第五章 Ch05 05C語言 第五章 Ch05 05
C語言 第五章 Ch05 05
shademoon
 
C語言 第五章 Ch05 18
C語言 第五章 Ch05 18C語言 第五章 Ch05 18
C語言 第五章 Ch05 18
shademoon
 
C語言 第4章 Ch04 02
C語言 第4章 Ch04 02C語言 第4章 Ch04 02
C語言 第4章 Ch04 02
shademoon
 
C語言 第4章 Ch04 01
C語言 第4章 Ch04 01C語言 第4章 Ch04 01
C語言 第4章 Ch04 01
shademoon
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能
shademoon
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式
shademoon
 
C語言 第二章 02 C的資料處理
C語言 第二章 02 C的資料處理C語言 第二章 02 C的資料處理
C語言 第二章 02 C的資料處理
shademoon
 
計概筆記2
計概筆記2計概筆記2
計概筆記2
shademoon
 
3 11英文單字
3 11英文單字3 11英文單字
3 11英文單字
shademoon
 
計概筆記1
計概筆記1計概筆記1
計概筆記1
shademoon
 

More from shademoon (15)

08 指標
08 指標08 指標
08 指標
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
第六章 函數與巨集
第六章 函數與巨集第六章 函數與巨集
第六章 函數與巨集
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制
 
C語言 第五章 Ch05 05
C語言 第五章 Ch05 05C語言 第五章 Ch05 05
C語言 第五章 Ch05 05
 
C語言 第五章 Ch05 18
C語言 第五章 Ch05 18C語言 第五章 Ch05 18
C語言 第五章 Ch05 18
 
C語言 第4章 Ch04 02
C語言 第4章 Ch04 02C語言 第4章 Ch04 02
C語言 第4章 Ch04 02
 
C語言 第4章 Ch04 01
C語言 第4章 Ch04 01C語言 第4章 Ch04 01
C語言 第4章 Ch04 01
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式
 
C語言 第二章 02 C的資料處理
C語言 第二章 02 C的資料處理C語言 第二章 02 C的資料處理
C語言 第二章 02 C的資料處理
 
計概筆記2
計概筆記2計概筆記2
計概筆記2
 
3 11英文單字
3 11英文單字3 11英文單字
3 11英文單字
 
計概筆記1
計概筆記1計概筆記1
計概筆記1
 

第六章 函數與巨集

  • 1. 王 智 祥 著 1-1 C的發展史 1-2 C程式初體驗 1-1-1 C的起源 1-2-1 程式碼的編寫與儲存 1-2-2 程式碼的編譯與執行 1-2-3 程式碼快速解析 1-3-1 妥善利用函數 1-3-2 適當加以縮排 1-3-3 盡量加上註解 1-4 上機實習課程 1-3 C程式設計基本 注意事項 1-1-2 C的特色與優點 1-1-3 C的程式執行過程簡介 第一章 C語言簡介
  • 2. 1-1-1 C的起源 1-1 C的發展史 P 1-2 1972年貝爾實驗室的 Dennis Ritchie 以 B 語言為基礎, 並持續改善它。 除了保留 BCLP 及 B 語言中的許多觀念外,更加入了資 料型態的觀念及其它功能,並且將它發表為「C語言」。 Dennis Ritchie 發展出來的 C 語言乃是架構在 DEC PDP-11 電腦上,最初的目的主要是做為開發 Unix 作業 系統的工具。 由於 C 語言這樣實用的工具使得 Unix 作業系統開發難 度降低且進行順利,所以也開始應用在其它的程式設計 領域,因此也使得 C 語言迅速受到眾人的矚目。
  • 3. 1-1-2 C的特色與優點(1) 1-1 C的發展史 P 1-4 程式可攜性高,具有跨平台能力 只要是使用 ANSI C 定義的標準函數庫來開發,而其中不包含一些中斷 處理或廠商單獨提供的函數庫,那麼所開發出來的程式將具有相當高的 可攜性(Portable)。 只要如果將開發出來的 C 語言程式碼拿到不同的作業平台上重新編譯, 隨即能夠產生一個功能相同的可執行程式,而程式開發者不再需要重新 編撰程式碼內容。 體積小,執行效率高 只要相較於 Java、Visual Basic、Pascal 等程式語言來說,C 語言的執 行效率相當高,執行時也相當穩定。
  • 4. 1-1-2 C的特色與優點(2) 1-1 C的發展史 P 1-4 具低階處理能力 雖然這些較低階的操作技巧在學習上並不容易,不過卻是其它高階程式 語言難以達成的工作項目。這也是C功能較其它語言強大的地方。 作為學習其它語言的基礎 C 語言堪稱是「程式語言之父」,例如 C++、Java、PHP 與 C# 等 程式語言,它們的基本語法及某些程式觀念都與 C 十分類似。
  • 5. 1-1-3 C程式執行過程簡介 1-1 C的發展史 P 1-5 過程通常可區分為「編輯」、「編譯」、「連結」、「載入」與 「執行」五個階段。 目前多半是使用所謂的整合開發環境(IDE,Integrated Development Environment)來作為 C 的開發環境。 編寫完的程式碼,電腦是看不懂的,必需翻譯成電腦能懂的機器 語言模式。 由於 C 是一種編譯式語言,也就是必須使用編譯器將原始程式 翻譯成「目的碼」,副檔名為「*.obj」。 由於使用者編譯的C程式中可能會使用到函數庫(副檔名為*.lib) 中的函數,或者一個程式可能分為數個檔案來開發,這些檔案在 編輯為目的檔後,必須透過連結器(linker),最後才會產生可執 行檔(副檔名為*.exe) 。 最後載入過程將可執行檔與相關的函數庫元件,從磁碟中載入到記 憶體中,就可準備執行了。
  • 7. 1-2-1 程式碼的編寫與儲存 01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main(void) 05 { 06 printf("C程式初體驗n");/* 呼叫printf()函數 */ 07 08 system("pause"); 09 return 0; 10 } 1-2 C程式初體驗 P 1-7 輸入完以上程式碼後,請執行「檔案/儲存」指令或是按工具列上 的「儲存」 鈕,並以「Ch01_01」為檔名,「.c」為副檔名進 行檔案儲存。
  • 8. 1-2-2 程式碼的編譯與執行 編譯進行中,這還包括 連結與載入過程 1-2 C程式初體驗 P 1-7 過程按下工具列中的編譯按鈕 或執行「執行/編譯」 指令,然後會出現以下視窗,代表檔案正在編譯中,如 果編譯成功,原本的 Compiling 會出現 Done 字樣:
  • 9. 1-2-2 程式碼的編譯與執行 1-2 C程式初體驗 P 1-7 請執行「執行/執行」指令或按下執行鈕 。 將會看到本程式的執行結果:
  • 10. 1-2-3 程式碼快速解析 1-2 C程式初體驗 P 1-8 程式範例:第一個程式碼範例:CH01_01.c
  • 11. 1-2-3 程式碼快速解析 1-2 C程式初體驗 P 1-8 第 1~2 行: 利用 #include 指令是前置處理指令的一種,在編譯時可將 <stdio.h> 標頭檔與 <stdlib.h> 標頭檔含括進來。 第 4 行: C 中的 main() 函數是程式的進入點,而程式的內容則包含 在 main() 下的大括弧 {} 內,而「void」表示此函數不需要 任何的引數,int 是宣告函數回傳值是整數資料型態。 第5~10行: 表示此函數的所有指令內容。 當然在這兩個大括弧間也可以完全沒有任何指令。
  • 12. 1-2-3 程式碼快速解析 1-2 C程式初體驗 P 1-9 第 6 行: printf() 是 C 語言的輸出函數指令,會將括號中引號「“」 內的字串輸出到螢幕上,而「/n」則是跳脫字元的一種,有 換行的功用,這些輸出功能會在第三章中為您深入說明。 至於「/*」與「*/」符號所包括的部份稱為「註解」。 第 8 行: 由於 Windows 系統正常結束後,都會直接關掉執行視窗, 執行畫面會一閃即逝,根本看不出執行結果。這時可利用 system() 函數呼叫系統參數 pause 會讓程式執行到此先暫停, 並且在執行視窗中會印出 "請按任意鍵繼續… " 等字,當您 敲下任意鍵後,程式便會往下執行。 第 9 行: 因為主程式被宣告為 int 資料型態,必須回傳(return)一 個值,在習慣上是傳回 0 作為程式執行完畢,在 ANSI C 語法中,如果這行指令省略,也會自動視為是「return 0;」 指令。
  • 13. 1-3-1 妥善利用函數 01 int main( ) 02 { 03 指令 1; 04 指令 2; 05 . 06 . 07 } C語言程式的開頭 C語言程式的內容 1-3 C程式設計基本注意事項 P 1-10 當程式開始執行時,一定會先執行 main() 這個函數, 而不管它在程式中的任何位置,編譯器都會找到它才 開始編譯程式內,因此 main() 又稱為「主函數」,架 構如下所示:
  • 14. 1-3-1 妥善利用函數 01 int main( ) 02 { 03 } 完全無任何的陳述 P 1-10 1-3 C程式設計基本注意事項 其中第02行的左大括弧 { 表示 main() 函式開始, 第07行的右大括弧 } 則表示 main() 函式的結束。 另外在這兩個大括弧間也可以完全沒有任何內容, 因此一個最簡單的 C 程式可以如下:
  • 15. 1-3-1 妥善利用函數 標 頭 檔 說 明 <math.h> 包含數學運算函數 <stdio.h> 包含標準輸出入函數 <stdlib.h> 標準函數庫,包含各類基本函數。 <string.h> 包含字串處理函數 <time.h> 包含時間、日期的處理函數 P 1-11 1-3 C程式設計基本注意事項 底下列出常見的C內建標頭檔供做參考:
  • 16. 1-3-2 適當加以縮排 Return0; /*不合法的指令*/ printf ( "C程式初體驗n") ; /*合法的指令*/ printf("C程式初體驗!!n"); system("pause"); return 0; /*合法的指令*/ print f("C程式初體驗!!n"); /*不合法的指令*/ P 1-12 1-3 C程式設計基本注意事項 在同一行指令中,對於完整不可分割的單元稱為字符 (token),兩個字符間必須以空白鍵、tab鍵或輸入鍵 區隔。 請看以下指令範例:
  • 17. 1-3-2 適當加以縮排 P 1-13 1-3 C程式設計基本注意事項 像是在主程式中包含子區段, 或者子區段中又包含其它子區 段時,這時就可以透過縮排來 區分程式碼的層級。 簡單來說,遇到大括號時就要 考慮縮排。 如以下巢狀if else指令,透過 縮排的效果讓,讓區塊層次 更分明:
  • 18. 1-3-3 盡量加上註解 /* 這是我的第一個C程式 它會顯示一小段簡單的文字 */ 中間的內容編譯器 全部不予理會 P 1-13 1-3 C程式設計基本注意事項 註解不僅可以幫助其他的程式設計師了解程式內容, 在日後進行程式維護時,詳盡的註解也能夠省下不少 維護時間與成本。 在 C 中「/*」與「*/」間的文字都屬於註解內容。 另外註解也能夠跨行使用。 如下所示:
  • 19. 1-4 上機實習課程 P 1-8 1-4 上機實習課程 上機實習範例: CH01_02.c 執行結果